#pragma once

#include <sys_def.h>

// 计算n的绝对值
static inline u32_s sm_abs(i32_s n) {
	u32_s pos_all_0_neg_all_1 = (i32_s)(n >> 31);
	// 对于正值，显然等于n。对于负值，等价于取反再加1（减-1），即取负。
	return ((u32_s)n ^ pos_all_0_neg_all_1) - pos_all_0_neg_all_1;
}

// 计算n1与n2的差值（大减小）
static inline u32_s sm_abs_diff(i32_s n1, i32_s n2) {
	return sm_abs(n1 - n2);
}
